#ifndef FHE_CORE_ENCODER_H
#define FHE_CORE_ENCODER_H

#include <fhe/core/Data.h>

namespace fhe
{
  namespace core
  {
    class Encoder : public boost::noncopyable
    {
    public:
      typedef boost::shared_ptr< Encoder > Ptr;
      virtual std::string extension() const = 0;
      virtual void save( const Data::Ptr& data, const std::string& filename ) const = 0;
      virtual Data::Ptr load( const std::string& filename ) const = 0;
    };
  }
}

#endif
